﻿// Prime Number Aizu - 0009.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

using namespace std;
//https://vjudge.csgrandeur.cn/problem/Aizu-0009


/*
编写一个程序，读取一个整数 n，并打印小于或等于 n 的质数的数量。质数是指仅有两个正因数（1和自身）的自然数。
例如，前四个质数分别是：2, 3, 5 和 7。

输入
输入包含多个数据集。每个数据集在一行中包含一个整数 n（1 ≤ n ≤ 999,999）。

数据集的数量少于或等于30。

输出
对每个数据集，打印质数的数量。

样例输入
10
3
11
样例输入对应的输出
4
2
5
*/

const int N = 1000010;
int primes[N], cnt;
bool st[N];

void get_primes(int n) {
	for (int i = 2; i <= n; i++) {
		if (!st[i])primes[cnt++] = i;
		for (int j = 0; primes[j] <= n / i; j++) {
			st[primes[j] * i] = true;
			if (i % primes[j] == 0) break;
		}
	}
}

int n;
int main()
{
	get_primes(1000010);
	while (cin >> n) {
		if (n < 2) {
			cout << 0 << endl;
			continue;
		}
		int l = 0; int r = cnt-1;
		while (l < r) {
			int mid = (l + r+1) >> 1;
			if (primes[mid] <= n) l = mid;
			else r = mid - 1;
		}
		cout << l + 1 << endl;
	}

}

 